home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / fb386 / peer / peer.bas < prev    next >
BASIC Source File  |  1994-06-01  |  7KB  |  151 lines

  1. 10 '####################################################################
  2. 20 '#####                                                          #####
  3. 30 '#####  「BASICで、ダンプしてみましょう。」   Ver 0.10        #####
  4. 40 '#####                                                          #####
  5. 50 '#####                File Name [PeeR](動詞)                    #####
  6. 60 '#####                                                          #####
  7. 70 '#####                       企画・制作者 「たまふり ふる・ふる」  #####
  8. 80 '#####                                                          #####
  9. 90 '####################################################################
  10. 100   WIDTH 80,25:CONSOLE 3,16,1:COLOR 7,0,7,4:CLS:CLEAR
  11. 110   DEFINT A-Z:DIM SMY(15)
  12. 120   ME$="ofADRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F SUM 0123456789ABCDEF"
  13. 130   ME1$="ofADRESS +3 +2 +1 +0 +7 +6 +5 +4 +B +A +9 +8 +F +E +D +C SUM 0123456789ABCDEF"
  14. 140   IO$="  ADRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F SUM 0123456789ABCDEF"
  15. 150 '●コントロ-ルコ-ド表示(PRINT表示)
  16. 160   PRINT CHR$(&H1B)+"[0;1;32m"
  17. 170    '-キャラクタ-コ-ドの00hより-
  18. 180   CC1=5:CR&=&H8100
  19. 190    LOCATE CC1  ,21:PRINT MKL$(CR&     )+" :"
  20. 200    LOCATE CC1  ,22:PRINT MKL$(CR&+&H01)+":"
  21. 210    LOCATE CC1  ,23:PRINT MKL$(CR&+&H02)+":";
  22. 220   CC1=12
  23. 230    LOCATE CC1  ,21:PRINT MKL$(CR&+&H03)+":"
  24. 240    LOCATE CC1  ,22:PRINT MKL$(CR&+&H04)+":"
  25. 250    LOCATE CC1  ,23:PRINT MKL$(CR&+&H05)+":";
  26. 260   CC1=19
  27. 270    LOCATE CC1  ,21:PRINT MKL$(CR&+&H06)+":"
  28. 280    LOCATE CC1+1,22:PRINT "BL"
  29. 290    LOCATE CC1  ,23:PRINT MKL$(CR&+&H08)+":";
  30. 300   CC1=26
  31. 310    LOCATE CC1  ,21:PRINT MKL$(CR&+&H09)+":"
  32. 320    LOCATE CC1  ,22:PRINT MKL$(CR&+&H0A)+":"
  33. 330    LOCATE CC1  ,23:PRINT MKL$(CR&+&H0B)+":";
  34. 340   CC1=33
  35. 350    LOCATE CC1+1,21:PRINT "CL"
  36. 360    LOCATE CC1  ,22:PRINT MKL$(CR&+&H0D)+":"
  37. 370    LOCATE CC1  ,23:PRINT MKL$(CR&+&H0E)+":";
  38. 380   CC1=40:FOR CRN&=&H810F TO &H8114 STEP 3
  39. 390    LOCATE CC1  ,21:PRINT MKL$(CRN&  )+":"
  40. 400    LOCATE CC1  ,22:PRINT MKL$(CRN&+1)+":"
  41. 410    LOCATE CC1  ,23:PRINT MKL$(CRN&+2)+":";
  42. 420   CC1=CC1+7:NEXT
  43. 430   CC1=54
  44. 440    LOCATE CC1+1,21:PRINT "NK"
  45. 450    LOCATE CC1+1,22:PRINT "SN"
  46. 460    LOCATE CC1  ,23:PRINT MKL$(CR&+&H17)+":";
  47. 470   CC1=61:FOR CRN&=&H8118 TO &H811B STEP 3
  48. 480    LOCATE CC1  ,21:PRINT MKL$(CRN&  )+":"
  49. 490    LOCATE CC1  ,22:PRINT MKL$(CRN&+1)+":"
  50. 500    LOCATE CC1  ,23:PRINT MKL$(CRN&+2)+":";
  51. 510   CC1=CC1+7:NEXT
  52. 520   CC1=75
  53. 530    LOCATE CC1  ,21:PRINT MKL$(CR&+&H1E)+":"
  54. 540    LOCATE CC1  ,22:PRINT MKL$(CR&+&H1F)+":"
  55. 550 '●CHR$No.表示
  56. 560   CC=2:FOR LOOP=0 TO &H1C STEP 3 
  57. 570    LOCATE CC,21:PRINT RIGHT$("00"+HEX$(LOOP  ),2)+"h="
  58. 580    LOCATE CC,22:PRINT RIGHT$("00"+HEX$(LOOP+1),2)+"h="
  59. 590    LOCATE CC,23:PRINT RIGHT$("00"+HEX$(LOOP+2),2)+"h=";
  60. 600   CC=CC+7:NEXT
  61. 610    LOCATE CC,21:PRINT RIGHT$("00"+HEX$(&H1E),2)+"h="
  62. 620    LOCATE CC,22:PRINT RIGHT$("00"+HEX$(&H1F),2)+"h=";
  63. 630   PRINT CHR$(&H1B)+"[0;1m";'-ESCコ-ドの指定解除- 
  64. 640 '●アドレス入力
  65. 650   GOSUB 1430
  66. 660   LOCATE 0,1:PRINT SPACE$(39)
  67. 670   LOCATE 0,1:INPUT"スタ-ト オフセット アドレス:&H",STARTSET$
  68. 680   IF "I"=LEFT$(STARTSET$,1) OR "i"=LEFT$(STARTSET$,1) THEN 
  69. 690      MID$(STARTSET$,1,1)=CHR$(&H20):GOSUB 1450
  70. 700   ENDIF
  71. 710   LE=LEN(STARTSET$)-2
  72. 720   IF LE>0 THEN MID$(STARTSET$,LE+1,2)="00" ELSE STARTSET$="" 
  73. 730   SAD&=VAL("&H"+STARTSET$)
  74. 740   IF (DUP=-1) AND (SAD&<&H3000) THEN SAD&=&H3000'I/Oアドレス最小値
  75. 750   IF (DUP=-1) AND (SAD&>&H3F01) THEN SAD&=&H3F00'I/Oアドレス最大値
  76. 760   IF  RDA=-1  THEN SL$=ME1$
  77. 770 '●ESCコ-ドで色指定
  78. 780   LOCATE 0,2:PRINT CHR$(&H1B)+"[7;32m"+SL$;
  79. 790   LOCATE 0,19:PRINT SL$;
  80. 800   LOCATE 0,20:PRINT "  SUM   "
  81. 810   PRINT CHR$(&H1B)+"[0;1m";'-ESCコ-ドの指定解除- 
  82. 820   Y=57'-(Y=Gモ-ドY軸の初期値)-
  83. 830   CLS 5:CLS 1'-G画面、T画面の消去-
  84. 840   FOR LOP0=1 TO 16'---------------------LOOP0 16回-------------------
  85. 850 '●4バイト単位で、DATAを読む---------LOOP1 4回-----------
  86. 860   FOR LOP1=0 TO 12 STEP 4
  87. 870    DUM$=HEX$(PEEK(SAD&+LOP1,4))
  88. 880    ON DUP^2 GOSUB 1460
  89. 890    DUM$=RIGHT$("00000000"+DUM$,8):RDA$=RDA$+DUM$
  90. 900 '●DATA並べ-----------------------LOOP2 4回---------------
  91. 910   FOR LOP2=7 TO 1 STEP -2 
  92. 920    DAT$=MID$(DUM$,LOP2,2)     :DAT=VAL("&H"+DAT$)
  93. 930    SMY(NO)=SMY(NO)+DAT:SMY(NO)=VAL("&H"+RIGHT$("00"+HEX$(SMY(NO)),2))
  94. 940    SMX=SMX+DAT                :SMX=VAL("&H"+RIGHT$("00"+HEX$(SMX),2))
  95. 950    LDA$=LDA$+DAT$+CHR$(&H20)  :KDA$=KDA$+CHR$(VAL("&H"+DAT$))
  96. 960   NO=NO+1:NEXT:NEXT'-------LOOP2 LOOP1 NEXT(16byt 1行分)------
  97. 970   SMX$=RIGHT$("00"+HEX$(SMX),2):SMX=0:SAD&=SAD&+16
  98. 980 '●DATA、X軸SUM表示(SYMBOL表示)
  99. 990   ON RDA^2 GOSUB 1490
  100. 1000   LDA$=RIGHT$("00000000"+HEX$(SAD&-16),8)+SPACE$(1)+LDA$+":"+SMX$
  101. 1010   SYMBOL(0,Y),LDA$,1,1,7:LDA$="":RDA$=""
  102. 1020 '●CHR表示(PRINT表示)--------LOOP3 16回-----------------------
  103. 1030   ON RDA^2 GOTO 1080
  104. 1040   FOR LOP3=1 TO 16:KDM=ASC(MID$(KDA$,LOP3,1)):K_F1=KDM<&H20
  105. 1050    ON K_F1^2 GOSUB 1330
  106. 1060   NEXT'--------LOOP3 NEXT(コントロ-ルコ-ドを置き換える)-----
  107. 1070   LOCATE 61,Y/19:PRINT KDA$;
  108. 1080   KDA$="":NO=0:Y=Y+19:NEXT'-------LOOP0 NEXT(256 byt 一画面分)-------
  109. 1090 '●Y軸SUM表示(PRINT表示)
  110. 1100    LOCATE 9,20:PRINT
  111. 1110   FOR LOP4=0 TO 45 STEP 3'--------LOOP4 16回------------------
  112. 1120    LOCATE LOP4+9,20:PRINT RIGHT$("00"+HEX$(SMY(LOP4/3)),2)+CHR$(&H20)
  113. 1130    SMYY=SMYY+SMY(LOP4/3):SMY(LOP4/3)=0
  114. 1140   NEXT'---------------------------LOOP4 NEXT------------------
  115. 1150   LOCATE 57,20:PRINT":"+RIGHT$("00"+HEX$(SMYY),2):SMYY=0
  116. 1160 '●キ-入力選択
  117. 1170 KY$=INKEY$
  118. 1180 IF KY$=""                            THEN GOTO  1170'無入力
  119. 1190 IF KY$=CHR$(&H1F) OR KY$=CHR$(&H0D)  THEN GOTO  740'上、RETURN、CTRL+M
  120. 1200 IF KY$=CHR$(&H2B) OR KY$=CHR$(&H17)  THEN GOTO  740'+ 、前行  
  121. 1210 IF KY$=CHR$(&H1E) OR KY$=CHR$(&H16)  THEN GOSUB 1350'下、次行
  122. 1220 IF KY$=CHR$(&H2D)                    THEN GOSUB 1350'-
  123. 1230 IF KY$=CHR$(&H01)                    THEN GOTO  660 'CTRL+A
  124. 1240 IF KY$=CHR$(&H02)                    THEN GOSUB 1380'CTRL+B
  125. 1250 IF KY$=CHR$(&H0E)                    THEN GOSUB 1410'CTRL+N
  126. 1260 IF KY$=CHR$(&H09)  THEN ON (DUP^2)+1 GOSUB 1450,1430'CTRL+I
  127. 1270 IF KY$=CHR$(&H12)  THEN RDA=NOT(RDA)                'CTRL+R
  128. 1280 IF KY$=CHR$(&H1B) OR KY$=CHR$(&H05) THEN GOTO 1310'ESC,CTRL+[,CTRL+E
  129. 1290 GOTO 1170
  130. 1300 '● プログラム終了処理
  131. 1310 CLS:WIDTH 80:CONSOLE 0,25,0:END
  132. 1320 '● "."に、置き換える
  133. 1330    MID$(KDA$,LOP3,1)=CHR$(&H2E):RETURN
  134. 1340 '● 一画面戻る
  135. 1350    SAD&=SAD&-512:IF SAD&=<0 THEN SAD&=0
  136. 1360    RETURN 740
  137. 1370 '● 128byt戻る
  138. 1380    SAD&=SAD&-384:IF SAD&=<0 THEN SAD&=0
  139. 1390    RETURN 740
  140. 1400 '● 128byt先へ
  141. 1410    SAD&=SAD&-128:RETURN 740
  142. 1420 '● メモリ-ダンプ モ-ド
  143. 1430    DUP=0 :SL$=ME$:LOCATE 61,1:PRINT "メモリ-";:RETURN 
  144. 1440 '● I/Oポ-トダンプ モ-ド
  145. 1450    DUP=-1:SL$=IO$:LOCATE 61,1:PRINT "I/O  ";:RETURN 
  146. 1460 '● I/Oポ-トを、読む
  147. 1470    DUM$=HEX$(INP(SAD&+LOP1,4)):RETURN
  148. 1480 '●読み込んだままのデ-タ表示
  149. 1490    FOR LOP5=1 TO 31 STEP 2:LRD$=LRD$+MID$(RDA$,LOP5,2)+CHR$(&H20)
  150. 1500    NEXT:LDA$=LRD$:LRD$="":RETURN 
  151.